COVID-19 ဗိုင်းရပ်၏အမည်မှာ Severe Acute Respiratory Syndrome Coronavirus 2 (SARS-CoV-2) ဖြစ်ပြီးထိုဗိုင်းရပ်ကြောင့်ဖြစ်သောရောဂါကို coronavirus disease(COVID-19) ဟုခေါ်ပါသည်။ Corona ဟူသောစကားလုံးသည် Latin ဘာသာဖြင့်ရေးသားထားခြင်းဖြစ်ပြီး English လို Crown ဟုအဓိပ္ပါယ်ရပါသည်။ ဗိုင်းရပ်၏ပုံသဏ္ဍပေါ်အခြေခံ၍ရေးသားခြင်းဖြစ်ပါသည်။ ဗိုင်းရပ်၏အမည်ပေးခြင်းကို International Committee on Taxonomy of Viruses (ICTV) မှပြုလုပ်ပြီး ရောဂါ၏အမည်ပေးခြင်းကို WHO မှပြုလုပ်ခြင်းဖြစ်ပါသည်။

WHO'S NAMING-and-the-virus-that-causes-it)

WHO-Coronavirus

MOHS

COVID-19 ရောဂါနှင့်ပတ်သက်၍လေ့လာတွေ့ရှိမှု့အသစ်

COVID-19 ရောဂါကြောင့်ဖြစ်ပေါ်လာသောရောဂါလက္ခဏာအသစ်(COVID toes)

အထက်ပါ website များမှတဆင့်သတင်းအချက်အလက်များရယူနိင်ပါသည်။


In [1]:
%store -r __importing_Lib
In [2]:
__importing_Lib
matplotlib inline backend and ggplot style are used.
Mplotlib version : 3.1.3
Numpy version	 : 1.18.1
Pandas version	 : 1.0.1
Seaborn version	 : 0.10.0
Folium version	 : 0.10.1
Other imported is: Waffle      
		 : datetime      
		 : base64      
		 : Json
In [3]:
import matplotlib as mpl
from matplotlib.legend import Legend
from folium import plugins
from graphviz import Digraph
import os
import datetime
from matplotlib import gridspec
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz2.38/bin/'
mpl.rcParams['xtick.minor.size'] = 0
mpl.rcParams['xtick.minor.width'] = 0
mpl.rcParams['ytick.minor.size'] = 0
mpl.rcParams['ytick.minor.width'] = 0


In [4]:
covid_df = pd.read_excel('covid/COVID-19-2020-05-18.xlsx', parse_dates=['dateRep'])
covid_df.rename(columns={'countryterritoryCode': 'Country_Code'}, inplace=True)
print(covid_df.shape)
cc_dict = {
            'Anguilla': 'AIA', 'Bonaire, Saint Eustatius and Saba': 'BES',
            'Czechia': 'CZE', 'Falkland_Islands_(Malvinas)': 'FLK'
          }
covid_df.query('countriesAndTerritories!=["Cases_on_an_international_conveyance_Japan"]', inplace=True)
for c_name, c_code in cc_dict.items():
    covid_df.loc[covid_df.countriesAndTerritories==c_name, 'Country_Code'] = c_code
print(covid_df.shape)
start_date = covid_df.dateRep.min().strftime('%d-%m-%Y')
last_date = covid_df.dateRep.max().strftime('%d-%m-%Y')
print(f'start_date: {start_date}', f'last_date : {last_date}', sep='\n')

total_death = covid_df.deaths.sum()
total_cases = covid_df.cases.sum()
overall_death_rate = total_death / total_cases * 100
print(f'total_death: {total_death:7,}\ntotal_cases: {total_cases:7,}\noverall_death_rate: {overall_death_rate:.3f}%')
covid_df.head()
(17785, 11)
(17721, 11)
start_date: 31-12-2019
last_date : 18-05-2020
total_death: 314,998
total_cases: 4,678,815
overall_death_rate: 6.732%
Out[4]:
dateRep day month year cases deaths countriesAndTerritories geoId Country_Code popData2018 continentExp
0 2020-05-18 18 5 2020 262 1 Afghanistan AF AFG 37172386.0 Asia
1 2020-05-17 17 5 2020 0 0 Afghanistan AF AFG 37172386.0 Asia
2 2020-05-16 16 5 2020 1063 32 Afghanistan AF AFG 37172386.0 Asia
3 2020-05-15 15 5 2020 113 6 Afghanistan AF AFG 37172386.0 Asia
4 2020-05-14 14 5 2020 259 3 Afghanistan AF AFG 37172386.0 Asia


In [5]:
region_df = pd.read_csv('life_expectancy/Metadata_Country.csv', usecols=[0, 1, 2])
region_df.columns = 'Country_Code', 'Region', 'IncomeGroup'
region_df.dropna(subset=['IncomeGroup'], inplace=True)
region_df.head()
Out[5]:
Country_Code Region IncomeGroup
0 ABW Latin America & Caribbean High income
1 AFG South Asia Low income
2 AGO Sub-Saharan Africa Lower middle income
3 ALB Europe & Central Asia Upper middle income
4 AND Europe & Central Asia High income


In [6]:
region_dict = {'Anguilla': ['Latin America & Caribbean', 'High income'],
               'Bonaire, Saint Eustatius and Saba': ['Latin America & Caribbean', 'High income'],
               'Falkland_Islands_(Malvinas)': ['Latin America & Caribbean', 'High income'],
               'Guernsey': ['Europe & Central Asia', 'High income'],
               'Holy_See': ['Europe & Central Asia', 'High income'],
               'Jersey': ['Europe & Central Asia', 'High income'],
               'Montserrat': ['Latin America & Caribbean', 'Upper middle income'],
               'Taiwan': ['East Asia & Pacific', 'High income']
               }
In [7]:
merge_df = covid_df.merge(region_df, on='Country_Code', how='left')
for cname, (reg, level) in region_dict.items():
    merge_df.loc[merge_df.countriesAndTerritories==cname, ['Region', 'IncomeGroup']] = reg, level
col_to_keep = ['dateRep', 'cases', 'deaths', 'Country_Name', 'Region', 'IncomeGroup']
merge_df = merge_df.rename(columns={'countriesAndTerritories': 'Country_Name'}).loc[:, col_to_keep]
merge_df.head()
Out[7]:
dateRep cases deaths Country_Name Region IncomeGroup
0 2020-05-18 262 1 Afghanistan South Asia Low income
1 2020-05-17 0 0 Afghanistan South Asia Low income
2 2020-05-16 1063 32 Afghanistan South Asia Low income
3 2020-05-15 113 6 Afghanistan South Asia Low income
4 2020-05-14 259 3 Afghanistan South Asia Low income


In [8]:
country_df = (merge_df.groupby(['Country_Name', 'IncomeGroup'])
                      .agg({'cases': 'sum', 'deaths': 'sum'})
                      .reset_index([0, 1]))
country_df.Country_Name.replace({'Democratic_Republic_of_the_Congo': 'Congo', 'United_States_of_America': 'USA'},
                                inplace=True)
country_df['c_proportion'] = country_df.cases / total_cases * 100
country_df['d_proportion'] = country_df.deaths / total_death * 100
country_df['death_rate'] = country_df.deaths / country_df.cases * 100
country_df.sort_values(['d_proportion', 'c_proportion', 'death_rate'], ascending=False).head()
Out[8]:
Country_Name IncomeGroup cases deaths c_proportion d_proportion death_rate
200 USA High income 1486757 89562 31.776358 28.432561 6.023984
197 United_Kingdom High income 243695 34636 5.208477 10.995625 14.212848
98 Italy High income 225435 31908 4.818207 10.129588 14.153969
69 France High income 142411 28108 3.043741 8.923231 19.737239
178 Spain High income 231350 27650 4.944628 8.777834 11.951589


In [9]:
case_name_lst = []
case_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
income_grp = country_df.groupby('IncomeGroup')
for g_name, grp in income_grp:
    temp = grp.sort_values('cases').tail()
    case_name_lst.append(temp.Country_Name.iloc[-1])
    case_quan_lst.append(temp.cases.iloc[-1])
    ax = (ax1 if g_name=='High income' else ax2
             if g_name=='Upper middle income' else ax3
             if g_name=='Lower middle income' else ax4)
    ax.set_title(g_name, y=1.035, fontdict={'weight':'bold'})
    ax.barh(temp.Country_Name, temp.cases, color='steelblue')
    ax.set_xlabel('Number of patients', fontdict={'weight':'bold'})
    ax.xaxis.set_label_coords(0.5, -0.123)
    for i, v in enumerate(temp.cases):
        if g_name=='High income':
            x = v-260_000 if v > 1_300_000 else v-215_000 if v > 220_000 else v-171_000
            
        elif g_name=='Upper middle income':
            x = v-42_000 if v > 100_000 else v-35_000
            
        elif g_name=='Lower middle income':
            x = v-12_000
        
        else:
            x = v-700 #if v > 1_000 else v-350
            
        ax.text(x, i-0.1, f'{v:,}', color='white', weight='bold')

plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.5)
fig.text(.5, 0.925, f'\nCOVID-19 Patients of all countries are analysed by IncomeGroup from \
{start_date} to {last_date}',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_01',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'});


In [10]:
cases_df = country_df.set_index('Country_Name').cases.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(cases_df.index, cases_df, color='steelblue')
for i, v in enumerate(cases_df):
    x = (v-144_000 if v > 1_300_000 else v-118_000 if v > 140_000 else v-111_000) 
    ax.text(x, i-0.1, f'{v:,}', color='white', weight='bold')
ax.set_yticklabels(cases_df.index, fontdict={'weight':'bold'})
ax.set_xlabel('Number of patients\nFig_02', fontdict={'weight':'bold'})
ax.set_title(f'\nCOVID_19 patients of top ten countries from {start_date} to {last_date}',
              y=1.035, fontdict={'weight':'bold'})
ax.xaxis.set_label_coords(0.5, -0.07)
In [11]:
top_cases = (country_df.sort_values('cases', ascending=False, ignore_index=True)
                        [['Country_Name', 'cases', 'c_proportion']].head(3))
fcn, scn, tcn = top_cases.Country_Name
fcq, scq, tcq = top_cases.cases
fcp, scp, tcp = top_cases.c_proportion
top_cases
Out[11]:
Country_Name cases c_proportion
0 USA 1486757 31.776358
1 Russia 281752 6.021867
2 United_Kingdom 243695 5.208477


In [12]:
death_name_lst = []
death_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
for g_name, grp in income_grp:
    temp = grp.sort_values('deaths').tail()
    death_name_lst.append(temp.Country_Name.iloc[-1])
    death_quan_lst.append(temp.deaths.iloc[-1])
    ax = (ax1 if g_name=='High income' else ax2
             if g_name=='Upper middle income' else ax3
             if g_name=='Lower middle income' else ax4)
    ax.set_title(g_name, y=1.035, fontdict={'weight':'bold'})
    ax.barh(temp.Country_Name, temp.deaths, color='steelblue')
    ax.set_xlabel('Number of patients', fontdict={'weight':'bold'})
    ax.xaxis.set_label_coords(0.5, -0.123)
    for i, v in enumerate(temp.deaths):
        x = (v-11_200 if v > 26_000 else v-2_000 if v > 15_000 else v-1_700 if v > 3_500 else v-320
                      if v > 1_000 else v-230 if v > 600 else v-13 if v > 100 else v-10)
        ax.text(x, i-0.1, f'{v:,}', color='white', weight='bold')

plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.5)
fig.text(.5, 0.925, f'\nDeaths of COVID-19 Patients of all countries are analysed by IncomeGroup from \
{start_date} to {last_date}',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_03',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'});


In [13]:
deaths_df = country_df.set_index('Country_Name').deaths.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(deaths_df.index, deaths_df, color='steelblue')
for i, v in enumerate(deaths_df):
    x = v-6_300 if v > 15_000 else v-5_100
    ax.text(x, i-0.1, f'{v:,}', color='white', weight='bold')

ax.set_yticklabels(deaths_df.index, fontdict={'weight':'bold'})
ax.set_xlabel('Number of deaths\nFig_04', fontdict={'weight':'bold'})
ax.set_title(f'\nTen highest death toll countries from {start_date} to {last_date}',
             y=1.035, fontdict={'weight':'bold'})
ax.xaxis.set_label_coords(0.5, -0.07)
In [14]:
top_deaths = (country_df.sort_values('deaths', ascending=False, ignore_index=True)
                         [['Country_Name', 'deaths', 'd_proportion']].head(3))
fdn, sdn, tdn = top_deaths.Country_Name
fdq, sdq, tdq = top_deaths.deaths
fdp, sdp, tdp = top_deaths.d_proportion
top_deaths
Out[14]:
Country_Name deaths d_proportion
0 USA 89562 28.432561
1 United_Kingdom 34636 10.995625
2 Italy 31908 10.129588


In [15]:
drate_name_lst = []
drate_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
for g_name, grp in income_grp:
    temp = grp.sort_values('deaths', ascending=False).head(10).sort_values('death_rate').tail()
    drate_name_lst.append(temp.Country_Name.iloc[-1])
    drate_quan_lst.append(temp.death_rate.iloc[-1])
    ax = (ax1 if g_name=='High income' else ax2
             if g_name=='Upper middle income' else ax3
             if g_name=='Lower middle income' else ax4)
    ax.set_title(g_name, y=1.035, fontdict={'weight':'bold'})
    ax.barh(temp.Country_Name, temp.death_rate, color='steelblue')
    ax.set_xlabel('Death rate', fontdict={'weight':'bold'})
    ax.xaxis.set_label_coords(0.5, -0.123)
    for i, v in enumerate(temp.death_rate):
        if g_name == 'High income':
            x = v-2.78
            
        elif g_name == 'Upper middle income':
            x = v-1.45 if v > 10 else v-1.25
        
        elif g_name == 'Low income':
            x = v-1.5 if v > 10 else v-1.3
            
        else:
            x = v-0.8
            
        ax.text(x, i-0.1, f'{v:.2f}%', color='white', weight='bold')

plt.subplots_adjust(top=0.85, wspace=0.33, hspace=0.5)
fig.text(.5, 0.925, f'\nDeath rate of COVID-19 Patients of top five countries for each IncomeGroup from \
{start_date} to {last_date}',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_05',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'});


In [16]:
death_rate_df = country_df.sort_values('deaths').tail(10)
death_rate_ten = death_rate_df.set_index('Country_Name').death_rate.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(death_rate_ten.index, death_rate_ten, color='steelblue')
for i, v in enumerate(death_rate_ten):
    x = v-1.48 if v > 11 else v-1.28
    ax.text(x, i-0.1, f'{v:.2f}%', color='white', weight='bold')

ax.set_yticklabels(death_rate_ten.index, fontdict={'weight':'bold'})
ax.set_xlabel('Death rate\nFig_06', fontdict={'weight':'bold'})
ax.set_title(f'\nTen highest death rate countries from {start_date} to {last_date}',
             y=1.035, fontdict={'weight':'bold'})
ax.xaxis.set_label_coords(0.5, -0.07)
In [17]:
drate_df = death_rate_ten.tail(3)
trn, srn, frn = drate_df.index
tr, sr, fr = drate_df
print(f'USA: {death_rate_ten["USA"]}')
drate_df
USA: 6.023983744485481
Out[17]:
Country_Name
United_Kingdom    14.212848
Belgium           16.374819
France            19.737239
Name: death_rate, dtype: float64


In [18]:
color_dict = {'cases': 'orange', 'deaths': 'red', 'death_rate': 'steelblue'}
cumsum_df = covid_df.groupby('dateRep')[['cases', 'deaths']].sum().cumsum()
cumsum_df.query('deaths > 0', inplace=True)
cumsum_df['death_rate'] = cumsum_df.deaths / cumsum_df.cases * 100
temp_first_date = cumsum_df.index.min().strftime('%d-%m-%Y')
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.plot(cumsum_df.index, cumsum_df.death_rate, color='steelblue')
ax.set_ylabel('Death rate', fontdict={'weight':'bold'})
ax.set_xlabel('Date\nFig_07', fontdict={'weight':'bold'})
ax.set_title(f'\nCOVID-19 Death rate for the whole world from {temp_first_date} to {last_date}',
             y=1.035, fontdict={'weight':'bold'})
plt.setp(ax.get_xticklabels(), weight='bold')
plt.setp(ax.get_yticklabels(), weight='bold')
ax.xaxis.set_label_coords(0.5, -0.15)
fig.autofmt_xdate();
In [19]:
max_day = cumsum_df.death_rate.idxmax()
min_day = cumsum_df.death_rate.idxmin()
max_drate = cumsum_df.loc[max_day].death_rate
min_drate = cumsum_df.loc[min_day].death_rate
print(min_day.strftime('%d-%m-%Y'), min_drate)
print(max_day.strftime('%d-%m-%Y'), max_drate)
pd.concat([cumsum_df.head(1), cumsum_df.tail(1)])
20-01-2020 1.2552301255230125
25-04-2020 7.284243574098434
Out[19]:
cases deaths death_rate
dateRep
2020-01-11 59 1 1.694915
2020-05-18 4678815 314998 6.732431


In [20]:
period_df = covid_df.groupby('dateRep').agg({'cases': 'sum', 'deaths': 'sum'})
cases_max_day = period_df.cases.idxmax()
deaths_max_day = period_df.deaths.idxmax()
print('Cases:', cases_max_day.strftime('%d-%m-%Y'), f'{period_df.loc[cases_max_day].cases:>8,}')
print('Deaths:', deaths_max_day.strftime('%d-%m-%Y'), f'{period_df.loc[deaths_max_day].deaths:>7,}')
period_df.info()
period_df.head()
Cases: 26-04-2020  101,445
Deaths: 16-04-2020  10,520
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 140 entries, 2019-12-31 to 2020-05-18
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   cases   140 non-null    int64
 1   deaths  140 non-null    int64
dtypes: int64(2)
memory usage: 7.3 KB
Out[20]:
cases deaths
dateRep
2019-12-31 27 0
2020-01-01 0 0
2020-01-02 0 0
2020-01-03 17 0
2020-01-04 0 0
In [21]:
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.plot(period_df.cases, color='steelblue')
ax.plot(period_df.deaths, color='red')
ax.semilogy()
ax.xaxis.set_major_locator(plt.MaxNLocator(11))
ax.set_yticklabels([0.01, 0.1, '1', '10', '100', '1,000', '10,000', '100,000'])
ax.set_xlabel('Date\nFig_08', fontdict={'weight':'bold'})
ax.set_title(f'\nInfected and death of people around the world by COVID_19 from {start_date} to {last_date}',
             y=1.035, fontdict={'weight':'bold'})
ax.set_ylabel('Number of people', fontdict={'weight':'bold'})
plt.setp(ax.get_xticklabels(), weight='bold')
ax.xaxis.set_label_coords(0.5, -0.17)
fig.autofmt_xdate();


Animated Bubble plot for COVID-19


  1. low income \$1,025 or less
  2. lower middle income \$1,026 and \$3,995
  3. Upper middle income \$3,996 and \$12,375
  4. High income \$12,376 or more

Classifying countries by income(World Bank)

COVID-19 ရောဂါကူးစက်ခံရသူ၊ သေဆုံးသူများ၏အရေအတွက်နှင့်ပတ်သက်သော သတင်းအချက်အလက်ကို European Centre for Disease Prevention and Control (ECDC) မှရယူခဲ့ပါသည်။

31-12-2019 မှ 18-05-2020 အထိတစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကူးစက်ခံရသူအရေအတွက်မှာ 4,678,815 ယောက်ဖြစ်ပြီး သေဆုံးသူအရေအတွက်မှာ 314,998 ယောက်ဖြစ်ပါသည်။ ပျမ်းမျှသေဆုံးနှုန်းမှာ 6.73% ဖြစ်ပါသည်။

ဝင်ငွေအုပ်စုအလိုက် COVID-19 ရောဂါကူးစက်ခံရမှု့ကိုလေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 1,486,757 ယောက်ဖြင့် USA မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 281,752 ယောက်ဖြင့် Russia မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 96,169 ယောက်ဖြင့် India မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 6,664 ယောက်ဖြင့် Afghanistan တို့သည်ရောဂါကူးစက်ခံရမှု့အမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_01)။

တစ်ကမ္ဘာလုံးအနေဖြင့်လေ့လာကြည့်လျှင် ရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးတိုင်းပြည်မှာ USA ဖြစ်ပြီး အရေအတွက်အားဖြင့် 1,486,757 (31.78%) ယောက်ဖြစ်ပါသည်။ ဒုတိယနှင့်တတိယရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးတိုင်းပြည်များမှာ Russia နှင့် United_Kingdom တို့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 281,752 (6.02%) နှင့် 243,695 (5.21%) ယောက်တို့ဖြစ်ပါသည်(Fig_02)။

COVID-19 ရောဂါကြောင့်သေဆုံးမှု့အား ဝင်ငွေအုပ်စုအလိုက်လေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 89,562 ယောက်ဖြင့် USA မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 16,118 ယောက်ဖြင့် Brazil မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 3,029 ယောက်ဖြင့် India မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 169 ယောက်ဖြင့် Afghanistan တို့သည်သေဆုံးမှု့အမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_03)။

COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အား တစ်ကမ္ဘာလုံးအနေဖြင့်လေ့လာကြည့်တွင် သေဆုံးမှု့အများဆုံးတိုင်းပြည်မှာ USA ဖြစ်ပြီး အရေအတွက်အားဖြင့် 89,562 (28.43%) ယောက်ဖြစ်ပါသည်။ ဒုတိယနှင့်တတိယသေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည်များမှာ United_Kingdom နှင့် Italy တို့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 34,636 (11.00%) နှင့် 31,908 (10.13%) ယောက်တို့ဖြစ်ကြပါသည်(Fig_04)။

ဝင်ငွေအုပ်စုအလိုက် COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည် 10 ခုအားရွှေးထုတ်ပြီးနောက် နိင်ငံအလိုက်သေဆုံးနှုန်းအားလေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် 19.74% ဖြင့် France မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် 10.52% ဖြင့် Mexico မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် 6.59% ဖြင့် Philippines မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် 10.54% ဖြင့် Chad တို့သည်သေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_05)။

COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည် 10 ခုအားရွှေးထုတ်ပြီးနောက် ထိုတိုင်းပြည်တစ်ခုချင်းအလိုက်သေဆုံးနှုန်းအားတွက်ထုတ်ကြည့်ရာတွင် France သည်သေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်ဖြစ်ပြီး 19.74% ဖြစ်ပါသည်။ ထို့နောက် 16.37% ဖြင့် Belgium သည်လည်းကောင်း၊ 14.21% ဖြင့် United_Kingdom တို့သည်ဒုတိယနှင့်တတိယသေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်များဖြစ်ကြောင်းလေ့လာတွေ့ရှိရသည်။ COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည်ဖြစ်သော USA ၏သေဆုံးနှုန်းမှာ 6.02% ဖြစ်ပါသည်(Fig_06)။

တစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကြောင့်အနည်းဆုံးပျမ်းမျှသေဆုံးနှုန်းမှာ 20-01-2020 တွင် 1.26% ဖြစ်ပြီးအမြင့်သေဆုံးနှုန်းမှာ 25-04-2020 တွင် 7.28% ကြောင်းလေ့လာတွေ့ရှိရပါသည်(Fig_07)။

တစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကူးဆက်ခံရသူနှင့်သေဆုံးသူအရေအတွက်အား နေ့အလိုက်လေ့လာကြည့်ရာတွင် 26-04-2020 သည်ရောဂါကူးဆက်ခံမှု့အများဆုံးနေ့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 101,445 ယောက်ဖြစ်ပါသည်။ 16-04-2020 သည်သေဆုံးသူအရေအတွက်အများဆုံးနေ့ဖြစ်ခဲ့ပြီး 10,520 ယောက်သေဆုံးကြောင်းလေ့လာတွေ့ရှိရပါသည်(Fig_08)။


In [22]:
myan_df = pd.read_excel('covid\covid_19.xlsx', index_col='Case_no').drop('Is_Checked', axis=1)
myan_df.Adult.replace({0:'Minor', 1:'Majority'}, inplace=True)
myan_df.Hospital.replace({'South Okkalapa Women & Children Hospital':
                          'South Okkalapa Specialist Hospital'}, inplace=True)
m_start_date = myan_df.Confirm_date.min().strftime('%d-%m-%Y')
m_last_date = myan_df.Confirm_date.max().strftime('%d-%m-%Y')
number_of_patients = myan_df.Age.count()
number_of_periods = (covid_df.dateRep.max() - myan_df.Confirm_date.min()).days + 1
average_rate = number_of_patients / number_of_periods
age_min = myan_df.Age.min()
age_max = myan_df.Age.max()
print(f'start_date: {m_start_date}', f'last_date case found : {m_last_date}', sep='\n')
print(f'Total number of patients: {number_of_patients}')
print(f'Total number of periods: {number_of_periods}')
print(f'Average confirm cases per day: {average_rate:.2f}')
print(f'Minimum_age: {age_min}', f'Maximum_age : {age_max}', sep='\n')
myan_df.head() 
start_date: 23-03-2020
last_date case found : 18-05-2020
Total number of patients: 188
Total number of periods: 57
Average confirm cases per day: 3.30
Minimum_age: 1.5
Maximum_age : 87.0
Out[22]:
Age Gender Adult Is_Travel_History Country Hospital Admission_date Confirm_date Condition Address State Coordinate Lat Long Infection_type Case_relative Case_relative_no Is_citizen Remark
Case_no
1 36.0 Male Majority Yes USA Tedim General Hospital 2020-03-21 2020-03-23 Recovery Tedim Town Chin 23.3689, 93.6508 23.3689 93.6508 Foreign No - Yes National
2 26.0 Male Majority Yes England Wai Bar Gi Hospital 2020-03-23 2020-03-23 Recovery Hmawbi Township Yangon 16.9205, 96.1565 16.9205 96.1565 Foreign No - Yes National
3 26.0 Male Majority Yes England Wai Bar Gi Hospital 2020-03-23 2020-03-25 Recovery Insein Township Yangon 16.9205, 96.1565 16.9205 96.1565 Foreign No - Yes National
4 33.0 Male Majority Yes USA Kandaw Nadi Hospital 2020-03-25 2020-03-27 Recovery Chanmyathazi Township Mandalay 21.9454, 96.1123 21.9454 96.1123 Foreign No - Yes Dual citizen
5 69.0 Male Majority Yes Australia, Singapore Wai Bar Gi Hospital 2020-03-25 2020-03-27 Death Mingala Taungnyunt Township Yangon 16.9205, 96.1565 16.9205 96.1565 Foreign No - Yes National


In [23]:
cd_df = myan_df.groupby('Confirm_date')['Gender'].count()#.cumsum()
cd_df.index = cd_df.index.strftime('%d-%m-%Y')
cd_df.name = 'Total'
pop_max_day = cd_df.idxmax()
cmax_pop = cd_df.loc[pop_max_day]
print(f'Day: {pop_max_day}', f'Number of confirm cases: {cmax_pop}', sep='\n')
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
ax.bar(cd_df.index, cd_df, color='steelblue')
for tup in cd_df.reset_index().itertuples():
    x = tup.Index-0.15 if tup.Total < 10 else tup.Index-0.34
    y = tup.Total
    ax.text(x, (y-0.82 if y > 1 else y-0.65), f'{tup.Total}', color='white', weight='bold')
ax.set_xlim(-0.8, len(cd_df)-0.2)
ax.set_ylabel('Number of case', fontdict={'weight':'bold'})
ax.set_xlabel('Fig_09', fontdict={'weight':'bold'})
ax.set_title(f'COVID-19 Daily total case for Myanmar from {m_start_date} to {last_date}',
             y=1.035, fontdict={'weight':'bold'})
ax.xaxis.set_label_coords(0.5, -0.18)
ax.set_xticklabels(cd_df.index, rotation = 45, ha='right', fontdict={'weight':'bold'});
Day: 14-04-2020
Number of confirm cases: 22


In [24]:
n = 5
count, bin_edges = np.histogram(myan_df.Age, bins=n)
age_idx = count.argsort()
portion = count/count.sum() * 100
print(myan_df.Age.sort_values().values, count, bin_edges, portion, sep='\n')
gender_df = myan_df.Gender.value_counts().reset_index()
gender_df.columns = 'Gender', 'Total'
gender_df['Proportion'] = gender_df.Total / number_of_patients * 100
m_prop = gender_df.query('Gender=="Male"').iloc[0,-1]
f_prop = gender_df.query('Gender=="Female"').iloc[0,-1]
gender_df
[ 1.5  7.   8.  10.  10.  12.  15.  17.  18.  18.  18.  18.  18.  19.
 19.  19.  20.  20.  20.  20.  20.  21.  21.  21.  21.  21.  22.  22.
 22.  22.  23.  23.  23.  23.  24.  24.  24.  24.  24.  24.  24.  24.
 24.  25.  25.  25.  26.  26.  26.  26.  26.  27.  27.  27.  28.  28.
 28.  28.  28.  28.  28.  29.  29.  29.  29.  29.  30.  31.  31.  31.
 31.  31.  31.  31.  31.  32.  32.  32.  32.  32.  32.  33.  33.  33.
 33.  33.  34.  35.  35.  35.  35.  35.  35.  35.  35.  36.  36.  37.
 37.  38.  38.  38.  38.  38.  39.  39.  39.  39.  40.  40.  40.  41.
 41.  41.  42.  43.  43.  43.  43.  43.  43.  43.  44.  44.  44.  44.
 44.  45.  45.  45.  45.  46.  46.  47.  47.  47.  48.  48.  49.  49.
 49.  50.  50.  51.  52.  52.  52.  53.  54.  54.  54.  54.  55.  56.
 57.  57.  57.  58.  58.  58.  60.  60.  60.  61.  62.  62.  63.  63.
 63.  63.  63.  65.  65.  65.  65.  66.  67.  68.  69.  75.  77.  78.
 78.  80.  84.  85.  85.  87. ]
[13 82 52 32  9]
[ 1.5 18.6 35.7 52.8 69.9 87. ]
[ 6.91489362 43.61702128 27.65957447 17.0212766   4.78723404]
Out[24]:
Gender Total Proportion
0 Male 102 54.255319
1 Female 86 45.744681


In [25]:
adult_df = myan_df.Adult.value_counts().reset_index()
adult_df.columns = 'Adult', 'Total'
adult_df['Proportion'] = adult_df.Total / number_of_patients * 100
maj_prop = adult_df.query("Adult=='Majority'").iloc[0,-1]
min_prop = adult_df.query("Adult=='Minor'").iloc[0,-1]
adult_df
Out[25]:
Adult Total Proportion
0 Majority 180 95.744681
1 Minor 8 4.255319


In [26]:
condition_df = myan_df.Condition.value_counts().reset_index()
condition_df.columns = 'Condition', 'Total'
condition_df.set_index('Condition', inplace=True)
condition_df.loc['Normal', 'Total'] = condition_df.loc['Normal', 'Total'] - 6
condition_df.loc['Recovery', 'Total'] = condition_df.loc['Recovery', 'Total'] + 6
condition_df['Proportion'] = condition_df.Total / number_of_patients * 100
condition_df.reset_index(inplace=True)
_, rq, rec_prop = condition_df.query("Condition=='Recovery'").iloc[0]
_, dq, dth_prop = condition_df.query("Condition=='Death'").iloc[0]
condition_df
Out[26]:
Condition Total Proportion
0 Recovery 101 53.723404
1 Normal 81 43.085106
2 Death 6 3.191489


In [27]:
infection_df = myan_df.Infection_type.value_counts().reset_index()
infection_df.columns = 'Infection_type', 'Total'
infection_df['Proportion'] = infection_df.Total / number_of_patients * 100
loc_prop = infection_df.query("Infection_type=='Local'").iloc[0,-1]
for_prop = infection_df.query("Infection_type=='Foreign'").iloc[0,-1]
infection_df
Out[27]:
Infection_type Total Proportion
0 Local 155 82.446809
1 Foreign 33 17.553191


In [28]:
fig, ((ax1, ax2, ax3), (ax4, ax5, ax6))= plt.subplots(2, 3, figsize=(15, 10))
myan_df.Age.plot.hist(bins=n, xticks=bin_edges, color='steelblue', ax=ax1)
ax1.set_ylabel('Number of patients', fontdict={'weight':'bold'})
ax1.set_xlim(myan_df.Age.min()-1, myan_df.Age.max()+1)
ax1.yaxis.set_label_coords(-0.13, 0.5)
ax1.set_title('Age of Patients', y=1.035, fontdict={'weight':'bold'})

sns.categorical.countplot('Gender', data=myan_df, palette=['orange', 'steelblue'],
                           ax=ax2, order=['Female', 'Male'])
ax2.set(xlabel=None, ylabel=None)
ax2.set_title('Gender of Patients', y=1.035, fontdict={'weight':'bold'})

sns.categorical.countplot('Adult', data=myan_df, palette=['orange', 'steelblue'],
                           ax=ax3, order=['Minor', 'Majority'])
ax3.set(xlabel=None, ylabel=None)
ax3.set_title('Adult of Patients', y=1.035, fontdict={'weight':'bold'})

sns.categorical.countplot('Condition', data=myan_df, palette=['red', 'green', 'steelblue'],
                           ax=ax4, order=['Death', 'Recovery', 'Normal'])
ax4.set(xlabel=None)
ax4.set_ylabel('Number of patients', fontdict={'weight':'bold'})
ax4.yaxis.set_label_coords(-0.13, 0.5)
ax4.set_title('Condition of Patients', y=1.035, fontdict={'weight':'bold'})

sns.categorical.countplot('Infection_type', data=myan_df, palette=['orange', 'steelblue'],
                           ax=ax5, order=['Local', 'Foreign'])
ax5.set(xlabel=None, ylabel=None)
ax5.set_title('Infection type of Patients', y=1.035, fontdict={'weight':'bold'})

sns.categorical.countplot('Remark', data=myan_df, palette=['slateblue', 'orange', 'steelblue'],
                           ax=ax6, order=['Dual citizen', 'Foreigner', 'National'])
ax6.set(xlabel=None, ylabel=None)
ax6.set_title('Nationality of Patients', y=1.035, fontdict={'weight':'bold'})

plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.4)
fig.text(.5, 0.925, f'\nCOVID-19 Patients of Myanmar are analysed by each attribute from \
{m_start_date} to {last_date}', fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_10',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'});


In [29]:
tsp_df = myan_df.query('State=="Yangon"').Address.value_counts().reset_index()
tsp_df.columns = 'Township', 'Total'
tsp_df.sort_values(['Total', 'Township'], ignore_index=True, inplace=True)
tsp_df.Township = tsp_df.Township.str.replace(' Township', '')
In [30]:
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
ax.bar(tsp_df.Township, tsp_df.Total, color='steelblue', width=0.9) 
for tup in tsp_df.itertuples():
    x = tup.Index-0.1 if tup.Total < 10 else tup.Index-0.25
    y = tup.Total
    ax.text(x, (y-1.4 if y > 1 else y-0.9), f'{tup.Total}', color='white', weight='bold')
ax.set_xlim(-.8, len(tsp_df)-0.2)
#ax.yaxis.set_major_locator(plt.MaxNLocator(10))
#ax.semilogy()
ax.set_ylabel('Number of patients', fontdict={'weight':'bold'})
ax.set_xlabel('Fig_11', fontdict={'weight':'bold'})
ax.set_title(f'\nCOVID-19 patients in each area of Yangon from {m_start_date} to {last_date}',
              y=1.035, fontdict={'weight':'bold'})
ax.set_xticklabels(tsp_df.Township, rotation = 45, ha='right', fontdict={'weight':'bold'});


In [31]:
rec_df = pd.read_excel('covid\covid_19.xlsx', sheet_name='rel_data', index_col='Case_no')
rec_df.query('Condition=="Recovery"', inplace=True)
merge_df = myan_df[['Confirm_date', 'Age', 'Gender', 'Address']].merge(rec_df, left_index=True, right_index=True)
merge_df.drop(['Time', 'Condition'], axis=1, inplace=True)
merge_df['rec_per'] = (merge_df.Date - merge_df.Confirm_date).dt.days
merge_df['age_grp'] = pd.cut(merge_df.Age, 6)
merge_df['rec_mask'] = merge_df.rec_per.apply(lambda x: 'Over_30' if x > 30 else 'Within_30')
avg_rec_periods = merge_df.rec_per.mean()
tot_recovery = len(merge_df)
min_rec = merge_df.rec_per.min()
max_rec = merge_df.rec_per.max()
print(f'Total_recovery_patients: {tot_recovery:}')
print(f'average_recovery_periods: {avg_rec_periods:.2f}')
print(f'minimum_recovery_periods: {min_rec}')
print(f'maximum_recovery_periods: {max_rec}')
merge_df.head()
Total_recovery_patients: 95
average_recovery_periods: 21.62
minimum_recovery_periods: 11
maximum_recovery_periods: 37
Out[31]:
Confirm_date Age Gender Address Date rec_per age_grp rec_mask
Case_no
1 2020-03-23 36.0 Male Tedim Town 2020-04-29 37 (30.0, 44.25] Over_30
2 2020-03-23 26.0 Male Hmawbi Township 2020-04-29 37 (15.75, 30.0] Over_30
3 2020-03-25 26.0 Male Insein Township 2020-04-09 15 (15.75, 30.0] Within_30
4 2020-03-27 33.0 Male Chanmyathazi Township 2020-04-08 12 (30.0, 44.25] Within_30
6 2020-03-28 29.0 Male Insein Township 2020-04-28 31 (15.75, 30.0] Over_30


In [32]:
summary_gen_rec = merge_df.groupby('Gender')['rec_per'].describe()
summary_gen_rec
Out[32]:
count mean std min 25% 50% 75% max
Gender
Female 47.0 21.659574 6.256394 11.0 16.0 22.0 26.0 33.0
Male 48.0 21.583333 7.073575 12.0 16.0 19.0 26.0 37.0


In [33]:
fig, [(ax1, ax2), (ax3, ax4)]= plt.subplots(2, 2, figsize=(15, 10))
n2=7
for gen, ax in zip(["Male", "Female"], [(ax1, ax3), (ax2, ax4)]):
    temp_df = merge_df.loc[merge_df.Gender==gen]
    sns.boxplot(x= 'rec_per', y='Gender', data=temp_df, color='orange', ax=ax[0])
    _, bin_edges = np.histogram(temp_df.rec_per, n2)
    temp_df.rec_per.plot.hist(bins=n2, color='steelblue', ax=ax[1], xticks=bin_edges)
    ax[0].set_xlabel(None)
    ax[0].set_ylabel(None)
    ax[0].set_title(f'Box plot for {gen}', y=1.045, fontdict={'weight':'bold'})
    
    ax[1].set_xlabel('Recovery periods', fontdict={'weight':'bold'})
    ax[1].set_ylabel('Number of recovery patients' if ax[1]==ax3 else None, fontdict={'weight':'bold'})
    ax[1].set_title(f'Histogram plot for {gen}', y=1.045, fontdict={'weight':'bold'})

plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.3)
fig.text(.5, 0.925, f'\nCOVID-19 recovery patients of Myanmar from {m_start_date} to {last_date}',
         fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_12', fontdict={'size':'x-large', 'weight':'semibold', 'ha':'center'});


In [34]:
gen_age_summary = merge_df.groupby(['Gender', 'age_grp']).describe()
gen_age_summary
Out[34]:
Age rec_per
count mean std min 25% 50% 75% max count mean std min 25% 50% 75% max
Gender age_grp
Female (1.414, 15.75] 3.0 8.333333 1.527525 7.0 7.500 8.00 9.000 10.0 3.0 22.000000 6.082763 15.0 20.00 25.0 25.50 26.0
(15.75, 30.0] 15.0 24.400000 3.942443 18.0 21.000 24.00 27.500 30.0 15.0 20.200000 4.616740 15.0 16.00 21.0 22.50 30.0
(30.0, 44.25] 11.0 35.909091 4.504543 31.0 32.500 35.00 38.500 44.0 11.0 23.000000 7.197222 15.0 16.50 23.0 30.00 32.0
(44.25, 58.5] 10.0 52.500000 5.275731 45.0 47.750 53.50 57.000 58.0 10.0 21.500000 7.778175 11.0 15.00 21.5 29.25 31.0
(58.5, 72.75] 4.0 64.250000 3.500000 60.0 62.250 64.50 66.500 68.0 4.0 27.000000 6.480741 20.0 22.25 27.5 32.25 33.0
(72.75, 87.0] 4.0 81.250000 5.678908 75.0 77.250 81.50 85.500 87.0 4.0 18.250000 2.986079 15.0 16.50 18.0 19.75 22.0
Male (1.414, 15.75] 2.0 5.750000 6.010408 1.5 3.625 5.75 7.875 10.0 2.0 27.500000 2.121320 26.0 26.75 27.5 28.25 29.0
(15.75, 30.0] 11.0 24.272727 3.552208 17.0 24.000 24.00 26.000 29.0 11.0 24.636364 7.684696 15.0 16.50 25.0 31.00 37.0
(30.0, 44.25] 26.0 36.846154 4.592971 31.0 33.000 36.50 40.750 44.0 26.0 20.576923 7.322148 12.0 15.00 18.0 22.75 37.0
(44.25, 58.5] 5.0 51.400000 3.361547 47.0 49.000 52.00 54.000 55.0 5.0 21.000000 5.099020 15.0 18.00 20.0 24.00 28.0
(58.5, 72.75] 2.0 65.000000 0.000000 65.0 65.000 65.00 65.000 65.0 2.0 20.000000 4.242641 17.0 18.50 20.0 21.50 23.0
(72.75, 87.0] 2.0 78.500000 2.121320 77.0 77.750 78.50 79.250 80.0 2.0 15.000000 1.414214 14.0 14.50 15.0 15.50 16.0


In [35]:
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
sns.boxplot(x='age_grp', y='rec_per', hue='Gender', data=merge_df, palette=['steelblue', 'orange'], ax=ax)
ax.set_xlabel('Age groups\nFig_13', fontdict={'weight':'bold'})
ax.set_ylabel('Recovery periods', fontdict={'weight':'bold'})
ax.set_title(f'Box plot of recovery patients are analysed by Age groups and Gender',
             y=1.045, fontdict={'weight':'bold'})
ax.xaxis.set_label_coords(0.5, -0.07);


In [36]:
rec_gen_df = (merge_df.rec_mask.value_counts()/tot_recovery*100)
within_30 = rec_gen_df.loc['Within_30']
over_30 = rec_gen_df.loc['Over_30']
within_30, over_30
Out[36]:
(86.31578947368422, 13.684210526315791)


In [37]:
state_df = myan_df.State.value_counts().reset_index()
state_df.columns = 'State', 'Total'
state_min = state_df.Total.min()
state_max = state_df.Total.max()
state_df['Proportion'] = state_df.Total / number_of_patients * 100
state_df['norm'] = np.log(state_df.Total)
st_name, st_prop = state_df.Total.iloc[0], state_df.Proportion.iloc[0]
state_df
Out[37]:
State Total Proportion norm
0 Yangon 148 78.723404 4.997212
1 Sagaing 7 3.723404 1.945910
2 Chin 7 3.723404 1.945910
3 Bago (West) 7 3.723404 1.945910
4 Mandalay 3 1.595745 1.098612
5 Shan (East) 3 1.595745 1.098612
6 Shan (South) 2 1.063830 0.693147
7 Nay Pyi Taw 2 1.063830 0.693147
8 Shan (North) 2 1.063830 0.693147
9 Kayin 2 1.063830 0.693147
10 Mon 1 0.531915 0.000000
11 Magway 1 0.531915 0.000000
12 Kachin 1 0.531915 0.000000
13 Rakhine 1 0.531915 0.000000
14 Tanintharyi 1 0.531915 0.000000


In [39]:
myan_map = folium.Map(location=[19.9940,96.0864],
                      tiles='StamenToner',
                      zoom_start=5)
folium.Choropleth(
    geo_data='myanmar(original).json',
    data=state_df,
    columns=['State', 'norm'],
    bins=4,
    key_on='feature.properties.ST',
    nan_fill_color='white',
    line_color='black',
    fill_color='Paired', 
    fill_opacity=1, 
    line_opacity=0.5,
    legend_name ='COVID-19',
    name="COVID-19 patients of each state",
    overlay=True,
    highlight = True).add_to(myan_map)
folium.LayerControl().add_to(myan_map)
myan_map.save('Myanmar_covid-19_map.html')
myan_map
Out[39]:


In [41]:
myan2_map = folium.Map([19.9940,96.0864],zoom_start=5)
cluster = plugins.MarkerCluster().add_to(myan2_map)
host_lst = ['Naypyitaw General Hospital', 'Kengtung General Hospital', 'Magway Regional Hospital',
            'Yangon General Hospital', 'Sagaing General Hospital']
host_lst2 = ['Mawlamyine General Hospital', 'Myitkyina General Hospital']
for t in myan_df2.reset_index().itertuples():
    html=f'''<div style="font-size:9pt; background-color:steelblue; color:white;">
                <div style="padding:3.5px 0; line-height:1.4;">
                    <b style="padding:0 7px;">Case_no
                        <span  style="padding: 0 1px 0 30.75px;">:</span>
                    </b>{t.Case_no:02d}<br>
                    <b style="padding:0 7px;">Age
                        <span  style="padding: 0 1px 0 54.35px;">:</span>
                    </b>{t.Age}<br>
                    <b style="padding:0 7px;">Gender
                        <span  style="padding: 0 1px 0 36px;">:</span>
                    </b>{t.Gender}<br>
                    <b style="padding:0 7px;">Condition
                        <span  style="padding: 0 1px 0 23.5px;">:</span>
                    </b>{t.Condition}<br>
                    <b style="padding:0 7px;">Address
                        <span  style="padding: 0 1px 0 34px;">:</span>
                    </b>{t.Address}<br>
                    <b style="padding:0 7px;">State
                        <span  style="padding: 0 1px 0 49px;">:</span>
                    </b>{t.State}<br>
                    <b style="padding:0 7px;">Hospital
                        <span  style="padding: 0 1px 0 32px;">:</span>
                    </b>{t.Hospital}<br>
                </div>
             </div>
          '''
    width = (304 if t.Hospital == 'South Okkalapa Specialist Hospital' else 282 if t.Hospital in host_lst2
                 else 271 if t.Hospital in host_lst else 251)
    ifram=folium.IFrame(html, width=width, height=135)
    popup=folium.Popup(ifram)
    icon=folium.Icon(color='green' if t.Condition == 'Recovery' else 'cadetblue' 
                                   if t.Condition != 'Death' else 'red')
    folium.Marker([t.Lat, t.Long], popup=popup, icon=icon).add_to(cluster)
myan2_map
Out[41]:



23-03-2020 မှ 18-05-2020 အထိမြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရသောလူအရေအတွက်မှာ 188 ယောက်ဖြစ်ပြီး၊ 6 ဦးသေဆုံး၍ ရောဂါကင်းစင်သွားသူ 101 ဦးရှိပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရသူများတွင် အသက် 1 နှစ် 6 လသည်အသက်အငယ်ဆုံးဖြစ်ပြီး အသက်အကြီးဆုံးမှာ 87 နှစ်ဖြစ်ကြောင်းတွေ့ရှိရသည်။တစ်နေ့လျှင်ပျမ်းမျှ 3.30 ယောက်ရောဂါကူးစက်ခံနေရပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရမှု့အများဆုံးနေ့မှာ 14-04-2020 ဖြစ်ပြီးအရေအတွက်အားဖြင့် 22 ယောက်ဖြစ်ကြောင်းတွေ့ရှိရသည်။

ရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးအသက်အပိုင်းအခြားမှာ 14.1 မှ 17.3 နှစ်အကြားဖြစ်ပြီး 82 (43.62%) ယောက်ဖြစ်ပါသည်။ ဒုတိယအများဆုံးမှာ 17.3 မှ 20.4 နှစ်အကြားဖြစ်ပြီး 52 (27.66%) ယောက်ဖြစ်ပါသည်။ ရောဂါကူးစက်ခံရမှု့၏ 54.26% မှာအမျိုးသားများဖြစ်ပြီး အမျိုးသမီးများ၏ရောဂါကူးစက်ခံရနှုန်းမှာ 45.74% ဖြစ်ပါသည်။

အသက် 18 နှစ်မှအထက်ရောဂါကူးစက်ခံရသောနှုန်းမှာ 95.74% ဖြစ်ပြီး အသက် 18 နှစ်အောက်ရောဂါကူးစက်ခံရသောနှုန်းမှာ 4.26% ဖြစ်ပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကြောင့်သေဆုံးနှုန်းမှာ 3.19% ဖြစ်ပြီး ရောဂါပျောက်ကင်းမှု့နှုန်းမှာ 53.72% ကြောင်းတွေ့ရှိရသည်။ ရောဂါကူးစက်ခံရသူများ၏ 17.55% သည်ပြည်ပမှကူးစက်ခံရသူများဖြစ်ပြီး ပြည်တွင်းကူးစက်ခံရသောနှုန်းမှာ 82.45% ဖြစ်ကြောင်းလေ့လာတွေ့ရှိရပါသည်။

မြန်မာနိင်ငံ၌ရောဂါကူးစက်ခံရသူအများဆုံးရှိသောဒေသမှာ ရန်ကုန်တိုင်းဒေသကြီးဖြစ်ပြီး 148 (78.72%) ယောက်ဖြစ်ပါသည်။ ရန်ကုန်တိုင်းဒေသကြီးတွင် အင်းစိန်မြို့နယ်သည် ရောဂါဖြစ်ပွါးမှု့အများဆုံးဖြစ်ပြီး အရေအတွက်အားဖြင့် 46 ယောက်ဖြစ်ပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါမဖြစ်ပွါးသောနေရာအဖြစ် ကယားပြည်နယ်၊ ဧရာဝတီတိုင်းဒေသကြီးနှင့်ပဲခူး(အရှေ့)တို့သာကျန်ရှိတော့ကြောင်းကိုတွေ့ရှိရပါသည်။

မြန်မာနိင်ငံ၌ COVID-19 ရောဂါခံစားရသောလူနာများ ရောဂါကင်းစင်ဖို့ရန်ပျမ်းမျှကြာချိန်သည် 21.62 ရက်ဖြစ်ပါသည်။ ရောဂါကင်းစင်ရန်အနိမ့်ဆုံးကြာချိန်မှာ 11 ရက်ဖြစ်ပြီး အမြင့်ဆုံးကြာချိန်မှာ 37 ရက်ဖြစ်ကြောင်းတွေ့ရှိရပါသည်။ COVID-19 ရောဂါခံစားရသော အမျိုးသမီးများ၏ ရောဂါကင်းစင်အနိမ့်ဆုံးကြာချိန်သည် 11 ရက်ဖြစ်ပြီး 33 ရက်သည်အမြင့်ဆုံးကြာချိန်ဖြစ်ကြောင်းတွေ့ရှိပါသည်။ အမျိုးသားများ၏ COVID-19 ရောဂါကင်းစင်ရန်အနိမ့်ဆုံးကြာချိန်မှာ 12 ရက်ဖြစ်ပြီး အမြင့်ဆုံးကြာချိန်မှာ 37 ရက်ဖြစ်ပါသည်။ အသက်အုပ်စု (1.414, 15.75] တွင်အမျိုးသမီးများသည် အမျိုးသားများထက်ရောဂါလျင်မြန်စွာပျောက်ကင်းကြောင်းတွေ့ရှိရပြီး (58.5, 72.75] နှင့် (72.75, 87.0] အုပ်စုတွင် အမျိုးသားများသည် အမျိုးသမီးများထက် ရောဂါပျောက်ကင်းမှု့မြန်ဆန်ကြောင်းတွေ့ရှိရသည်။ COVID-19 ရောဂါပျောက်ကင်းသူစုစုပေါင်း၏ 86.32% သည်ရက်သုံးဆယ်အတွင်ရောဂါပျောက်ကင်းပြီး 13.68% သည်ရက်သုံးဆယ်ကျော်မှ ရောဂါပျောက်ကင်းကြောင်း တွေ့ရှိရပါသည်။


In [42]:
first_lst = ['C_11', 'C_12', 'C_13', 'C_8', 'C_28', 'C_40', 'C_5', 'C_15', 'C_1', 'C_23', 'C_128', 'C_101',
             'C_107', 'C_98', 'C_155', 'C_86']
second_lst = ['C_39', 'C_84', 'C_87', 'C_89', 'C_94', 'C_108', 'C_110', 'C_79', 'C_92', 'C_93', 'C_133', 
              'C_134', 'C_142', 'C_139']

third_lst = ['C_151', 'C_152', 'C_153', 'C_154', 'C_162', 'C_177', 'C_179',]

case_2 = Digraph('case', filename='case2', format='png', 
                 node_attr={'color': 'steelblue', 'style': 'filled',
                            'height': '1', 'fontsize': '14', 'weight':'bold'})
case_3 = Digraph('case', filename='case3', format='png', 
                 node_attr={'color': 'steelblue', 'style': 'filled',
                            'height': '1', 'fontsize': '14', 'weight':'bold'})
case_4 = Digraph('case', filename='case4', format='png', 
                 node_attr={'color': 'steelblue', 'style': 'filled',
                            'height': '1', 'fontsize': '14', 'weight':'bold'})

case_5 = Digraph('case', filename='case5', format='png', 
                 node_attr={'color': 'steelblue', 'style': 'filled',
                            'height': '1', 'fontsize': '15', 'weight':'bold'})

case_6 = Digraph('case', filename='case6', format='png', 
                 node_attr={'color': 'steelblue', 'style': 'filled',
                            'height': '1', 'fontsize': '15', 'weight':'bold'})

case_2.attr(size='70, 70')
case_3.attr(size='70, 70'), case_4.attr(size='70, 70'), case_5.attr(size='70, 70'), case_6.attr(size='70, 70')
for tup in myan_df.query('Case_relative_no!="-"').Case_relative_no.reset_index().itertuples():
    for v in tup.Case_relative_no.split(', '):
        case_2.edge(f'{v}', f'C_{tup.Case_no}')
        if v in first_lst:
            case_3.edge(f'{v}', f'C_{tup.Case_no}')
        elif v in second_lst:
            case_4.edge(f'{v}', f'C_{tup.Case_no}')
        elif v in third_lst:
            case_6.edge(f'{v}', f'C_{tup.Case_no}')
        else:
            case_5.edge(f'{v}', f'C_{tup.Case_no}')
for case in [case_3, case_4, case_5, case_6]:
    case.view()
#case_2.view()


In [43]:
c_no_str = ''
myan_iter = myan_df.query("Condition=='Recovery'").index
for c_no in myan_iter:
    c_no_str += f'C_{c_no}, '

မှတ်ချက်

  1. MOHS မှထုတ်ပြန်ချက်တွင် မည်သူ့ထံမှတဆင့်ရောဂါကူးစက်ခံရသည်ကို လူနာအမှတ်စဥ်ဖြင့်သော်လည်းကောင်း၊ လူနာအမှတ်စဥ်မပါ၍သော်လည်းကောင်းဖော်ပြလေ့ရှိပါသည်။ ထို့ကြောင့် တဆင့်ရောဂါကူးစက်ခံရမှု့ကိုဖော်ပြသောပုံသည် ရရှိသောသတင်းအချက်အလက်အပေါ်အခြေခံ၍ရေးဆွဲထားသောကြောင့် ပြည့်စုံသည်ဟုမဆိုနိင်ပါ။
  1. MOHS မှထုတ်ပြန်ချက်တွင် ရောဂါကင်းစင်သွားသူ 101 ဦးရှိသည်ဟုဖော်ပြသော်လည်း လူနာအမှတ်စဥ်ဖြင့်ဖော်ပြသည့်အရေအတွက်မှာ 95 ယောက်သာရှိပါသည်။ ထိုလူနာအမှတ်စဥ်များမှာ C_1, C_2, C_3, C_4, C_6, C_7, C_8, C_9, C_11, C_12, C_14, C_15, C_18, C_19, C_20, C_21, C_22, C_24, C_25, C_26, C_27, C_29, C_30, C_32, C_33, C_35, C_36, C_38, C_40, C_41, C_44, C_45, C_46, C_47, C_48, C_49, C_50, C_51, C_53, C_54, C_55, C_56, C_57, C_58, C_62, C_63, C_65, C_66, C_67, C_69, C_70, C_71, C_72, C_73, C_74, C_75, C_77, C_79, C_81, C_82, C_84, C_85, C_88, C_90, C_92, C_95, C_96, C_97, C_98, C_99, C_102, C_103, C_104, C_105, C_108, C_109, C_114, C_115, C_116, C_117, C_118, C_120, C_121, C_126, C_127, C_132, C_141, C_142, C_143, C_144, C_146, C_147, C_150, C_151, C_156 တို့ဖြစ်ပါသည်။
  1. ECDC မှ COVID-19 နှင့်ပတ်သက်သောသတင်းအချက်အလက်အား မြန်မာစံတော်ချိန်ညနေ 06:00 ဝန်ကျင်၌ရယူခဲ့ပါသည်။
  1. 19-05-2020 03:00:00 AM အထိတစ်ကမ္ဘာလုံး၌ ရောဂါကူးစက်ခံရသူအရေအတွက်မှာ 4,758,937 ယောက်ဖြစ်ပြီး သေဆုံးသူအရေအတွက်မှာ 316,277 ယောက်ဖြစ်ပါသည်။

Author: MIN KYAW ZAW
E-mail: minkyawzraw@gmail.com
LinkedIn: www.linkedin.com/in/minkyawzaw